home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / fb386 / lib / powergui / pguivari.doc < prev    next >
Text File  |  1995-03-30  |  9KB  |  316 lines

  1.  
  2.  
  3.   Power GUI system
  4.  
  5.    C”( C two prime ) 4th edition [  Duplicate me! mix  ]
  6.  
  7.                                                for F-BASIC 386 V2.1 L10 以降
  8.                                                Programmed by H.Matsuoka
  9.  
  10.  
  11.                     << 詳細解説ファイル  >>
  12.  
  13. ■正式名称について
  14.  
  15.   Power GUI system C two prime 4th edition [ Duplicate me! mix ] 
  16.  
  17.  「パワーグイシステム・シートゥープライム・フォースエディション・デュプリケイトミーミックス」と読む。
  18.  
  19.  
  20. ■設計思想・背景
  21.  
  22.  実行速度・効率を無視し、機能性を重視。短期集中開発、又、将来レベルアップをしない事を前提に開発。
  23.  (でも、内部では上位互換の土台を作ってあったりする。)
  24.  
  25.  
  26. ■開発ログ
  27.  
  28.  1994/1/ 9  開発開始
  29.             週平均1-2日ペースで開発
  30.  
  31.       1/後半  諸事情により開発ストップ
  32.       2/前半
  33.  
  34.       2/20  βバージョン完成、フリコレへ発送
  35.  
  36.  
  37.  
  38. ■設計骨子
  39.  
  40.  (後注:本詳細情報ファイルは、プログラムが完成していることを前提に書いてい
  41.      ますのでβバージョンである本パッケージでは、実際と異なる事が記述し
  42.      てある場合もあり得ます。本ファイルでは、この傾向が特に強いので、余
  43.      り参考にはならないかもしれません。)
  44.  
  45.  
  46.  
  47.  レイアウターは用意しない。
  48.  
  49.  プログラマーは、窓口変数を通じてのみGUI部品にアクセスできる。
  50.  
  51.  テキストリストに関しては、システムが許可した範囲の領域をプログラマーが直接アクセスする。
  52.  
  53.  GUIの運用は、初期化・登録・ウィンドウオープン・実行の順で行う。
  54.  
  55.  窓口から入ってきた部品登録データーは、GUIデーター保持配列に、スタック式に積んでゆく。
  56.  
  57.  このため、1度登録した部品データの抹消、及び、ウィンドウ内への部品の追加登録はできない。
  58.  
  59.  また、オープン済のウィンドウの重なり順も変更できない。
  60.  
  61.  ハイブリッド部品は、登録時に単部品に分解され、部品間リンク機能によって統合、機能する。
  62.  
  63.  このため、窓口からは、分解された単部品を意識する必要はない。
  64.  
  65.  
  66. ■部品管理ルーチンの持つべき機能
  67.  
  68.  本システムでは、ボタン、スクロールバー等々の部品は、一つのユニットになっていて、その追加/削除は比較的簡単に行えます。
  69.  
  70.  ここでは、ユニット作成の参考資料を公開します。
  71.  
  72.  ●システムとの関係
  73.  
  74.    システムは、マウス入力やプログラマーからの要求を分析し、適当な部品ユニ
  75.   ットに対して要求を出します。
  76.  
  77.    部品ユニットは、これらの要求に確実に答えなければいけません。
  78.  
  79.  ●システムからの要求
  80.  
  81.    システムからの要求内容は、文字変数 PGUI_SYS$ に文字列で渡されます。
  82.  
  83.    以下にその要求名と、必要な処理内容を記します。
  84.  
  85.  
  86.     "ENTRY"   登録モードを意味します。
  87.  
  88.         この要求を受けたユニットは、速やかに登録用窓口にパラメータを
  89.        セットして、RETURN 命令を実行します。
  90.  
  91.         但し、プログラマーが窓口変数に設定した値が、そのまま設定値に
  92.        なるような変数については、この作業を省略できます。
  93.  
  94.         この他、マウスイベントデータもこの時に登録します。
  95.  
  96.         このマウスイベントデータについては、別項「マウスイベントにつ
  97.        いて」をご覧ください。
  98.  
  99.  
  100.     "FIRST"     初期表示モードを意味します。
  101.         この要求を受けたら、ユニットは速やかに部品を表示してください。
  102.  
  103.    ▲画面への書き込み
  104.  
  105.      本システムでは、アクティブウィンドウの左上座標が、常に(0,0)に
  106.     なっており、ほとんど全てのグラフィック命令がこれに従う状態になってい
  107.     ますので、ウィンドウ位置を気にせずに部品を表示できます。
  108.  
  109.  
  110.  
  111.     "EVENT"     マウスイベントの発生を意味します。
  112.  
  113.         この要求を受けたユニットは、速やかにマウスアクションに対応し
  114.        た動作をします。
  115.         なお、イベント発生時は、以下の情報が返ります。
  116.  
  117.         マウスの状態を、PGUI_EVENT$ に
  118.  
  119.                 "INPACT"
  120.                 "PRESS"
  121.                 "DRAG"
  122.                 "RELEASE"
  123.  
  124.         のいずれかで返します。
  125.  
  126.  
  127.  
  128.     "UPDATE"    プログラマーからの部品内容のアップデート要求を意味します。
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138. ■マウスイベントデータについて
  139.  
  140.  各部品ユニットは、マウスの入力との関連付けを、イベント領域を設定することで行えます。
  141.  
  142.  イベントデータは1部品あたりいくつでも指定でき、
  143.  
  144.    イベント固有のメモ的な値
  145.  
  146.    イベント確定タイミング(詳しくは後で)
  147.  
  148.    ドラッグフラグ
  149.  
  150.    イベント発生時のリンク先部品番号
  151.  
  152.  
  153.  も設定でき、設定した領域で任意のマウスイベントが発生すると、システムからイべントの発生とマウスの状態を表すメッセージが発行され、リンク先の部品ユニットに制御が移ります。
  154.  
  155.  
  156.    ▲イベント確定タイミングについて
  157.  
  158.      部品ユニットは、マウスイベント登録時に、イベントを確定するタイミン
  159.     グを設定できます。
  160.  
  161.      これは、マウスのボタンを押すという動作を
  162.  
  163.        インパクト
  164.  
  165.        プレス
  166.  
  167.        リリース
  168.  
  169.      の3場面にわけ、それぞれ、マウスイベント登録時に、
  170.  
  171.       PGUI_TIMING$  =  "INPACT"  /  "PRESS"  /  "RELEASE"
  172.  
  173.      のいずれかを実行し、イベント確定のタイミングを設定するものです。
  174.  
  175.      (省略時は、「リリース」となります。)
  176.  
  177.  
  178.      なお、ボタンを例にとった、設定と動作の対応については、以下の通りで
  179.     す。
  180.  
  181.  
  182.      ( 確定タイミングをインパクトに設定した場合 )
  183.  
  184.      マウスのボタンを押した瞬間にイベントが発生します。
  185.      押しっぱなしにしても、押し直すまでは、どのイベントも発生しません。
  186.  
  187.  
  188.      ( プレスに設定した場合 )
  189.  
  190.      マウスのボタンを押した瞬間にイベントが発生します。
  191.      押しっぱなしにしている間は、連続してイベントが発生します。
  192.  
  193.  
  194.      ( リリースに設定した場合 )
  195.  
  196.      マウスのボタンがイベント領域で放された瞬間にイベントが発生します。
  197.      イベント領域以外でマウスが放された場合には、イベントは発生しません。
  198.  
  199.  
  200.  
  201.    ▲マウスイベントデータの登録方法
  202.  
  203.  
  204.     -<< イベントを登録しない場合 >>-
  205.  
  206.         何もしません。
  207.  
  208.  
  209.     -<< 部品と同じサイズのイベントを1つだけ登録する場合 >>-
  210.  
  211.         PGUI_EVENT_AS = -1  を実行しておきます。
  212.  
  213.  
  214.     -<< 部品とサイズの違うイベントを1つだけ登録する場合 >>-
  215.  
  216.         PGUI_EVSX / SY / EX / EY
  217.  
  218.        に、イベント領域(ウィンドウ内座標)をセットし、
  219.  
  220.                PGUI_EVENT = -1
  221.  
  222.        を実行しておきます。
  223.  
  224.  
  225.     -<< 複数のイベントを登録する場合 >>-
  226.  
  227.         PGUI_EVSX / SY / EX / EY  イベント領域(ウィンドウ内座標)
  228.  
  229.         PGUI_CALL_PRA&       イベント発生時にユニットに渡すパ
  230.                       ラメータ
  231.  
  232.        をセットし、
  233.  
  234.         GOSUB *PGUI_EVENT_ENTRY
  235.  
  236.        を実行する。
  237.  
  238.        という作業をくり返します。
  239.  
  240.  
  241.  
  242. ■ハイブリッド部品について
  243.  
  244.  本システムでは、通常の単部品以外に、単部品を組み合わせて作成したハイブリッド部品も利用可能です。
  245.  
  246.  このハイブリッド部品は、
  247.  
  248.  複数の単部品の間にマスタ/スレーブの関係づけを行うことで、より複雑な機能をもつ部品を効率的に作成する機構で、
  249.  
  250.             マスタ側を  ハイブリッドピャーレント
  251.            スレーブ側を  ハイブリッドチャイルド
  252.  
  253.  また、ハイブリッド第1世代を特に  ハイブリッドマスター
  254.  
  255.  と呼び、
  256.  
  257.  
  258.  
  259.  
  260.  
  261. ■変数表
  262.  
  263.  C two prime 4th edition [ Duplicate me ! MIX ] 変数表
  264.  
  265.  
  266.  ここでは、変数名の先頭の「 PGUI_ 」は省略しています。
  267.  
  268.  
  269.  ●API窓口変数
  270.  
  271.   プログラマーが直接アクセスする事を許されている変数です。
  272.  
  273.     NAME$   プログラマーが付ける部品の名称
  274.     TYPE$   部品の大まかなタイプを設定
  275.              BUTTON / ICON / SCROLL BAR / INPUT CHAR / WINDOW / LIST MENU / SCROLL LIST MENU
  276.     FORM$   部品の細かな形状を設定
  277.  
  278.              < TYPE$ = "BUTTON" 時 >
  279.         SQUARE / ROUND / CLOSE
  280.  
  281.              < TYPE$ = "WINDOW" >
  282.                 T-OS / ROUND
  283.  
  284.     DISP$   部品に表示する文字列
  285.         BUTTON + [ SQUARE | ROUND ]
  286.               WINDOW + [ T-OS | WINDOWS ]
  287.                 時のみ指定可能。
  288.  
  289.     POS$    部品の表示左上座標(日本語設定)
  290.  
  291.         さっきの
  292.               いちばん / ちょっと / すぐ
  293.               右 / 左 / 上 / 下
  294.  
  295.             以上の文字列の組合せで指定。
  296.       比較を意味する語については、部品がウィンドウの場合はディスプレイ表示域を比較対象にし、それ以外の場合はウィンドウが比較対象になる。
  297.  
  298.     SX/SY   部品の左上座標
  299.       数値設定で行う場合。日本語指定を行った場合は無視される。
  300.  
  301.     WX/WY   部品の大きさ
  302.             (TYPE)BUTTON 時は表示内容から自動的に算出される。
  303.  
  304.     LIST$(x)テキストリストデーターを格納する
  305.       これは、(TYPE)LIST MENU | SCROLL LIST MENU 時に設定
  306.  
  307.  
  308.  
  309.  ●GUIデータ保持用変数
  310.  
  311.  
  312.  ●内部汎用変数
  313.  
  314.  
  315.  
  316.